#ifndef OCTREE_FPS_HH_
# define OCTREE_FPS_HH_

# include "node_fps.hh"
# include "octree.hh"
# include "../map/map.hh"

class OctreeFps : public Octree
{
public:
  OctreeFps (unsigned int size, unsigned int height);
  OctreeFps (unsigned int size, unsigned int height, Map* map);
  ~OctreeFps ();

  Map* map_get () const { return map_; }

  void map_set (Map* map) { map_ = map; }

  void add_obj (Object* obj);
  bool delete_obj (Object* obj);

  void accept (PhysicFunctor* phy);
  void accept (DisplayFunctor* disp);
  void accept (MapFunctor* mf);

protected:
  Map* map_;
  unsigned int height_;

  NodeFps* root_;
};

#endif /// !OCTREE_FPS_HH_
